//home模块的小仓库---四部分 state mutations actions getters
//state存储数据的地方
import { reqDetailList, reqAddCartOrUpdateSkuNum } from "@/api";
const state = {
    detailList: {}
};
//mutations:唯一可以修改仓库数据的地方
const mutations = {
    GETDETAIL(state, detailList) {
        state.detailList = detailList;
    }
};
//actions:可以书写业务、逻辑
const actions = {
    async getDetail({ state, commit, dispatch }, skuId) {
        let result = await reqDetailList(skuId);
        if (result.code == 200) {
            commit('GETDETAIL', result.data);
        }
    },
    //加入购物车或者修改某一个商品的请求
    async addCartOrUpdate({ state, commit, dispatch }, { skuId, skuNum }) {
        let result = await reqAddCartOrUpdateSkuNum(skuId, skuNum);
        //如果当前这次请求result.code==200--->代表加入购物车成功
        if (result.code == 200) {
            return 'ok';
        } else {
            return Promise.reject();
        }

    }

    //一个函数前面加上async,这个函数返回结果一定是一个Promise对象[pendding、成功、失败]
    //当前async函数返回的Promise状态,有当前函数返回结果决定！！！！
};
//计算属性getters
const getters = {
    //简化仓库的数据
    categoryView(state) {
        //category计算出来的一个属性,属性值其实经历过两次计算，
        //当服务器数据没有回来state.detailList空对象,空对象打点一个没有属性，获取数值undefined
        return state.detailList.categoryView || {};
    },
    //skuInfo:商品详情的数据
    skuInfo() {
        //当服务器的数据未回来:state.detailList空对象,空对象打点一个没有的属性->undefined
        return state.detailList.skuInfo || {}
    },
    //商品销售属性的数据简化
    spuSaleAttrList() {
        return state.detailList.spuSaleAttrList || []
    }
};

//对外暴露小仓库
export default {
    namespaced: true,
    state,
    mutations,
    actions,
    getters
}





//当前小仓库:detailList起始数值空对象，当服务器数据返回之后，替换为服务器数据！！！
//如果服务器数据没有返回:state.detailList空对象，空对象打点一个没有属性，获取数值undefined


